%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS
%
% change this info string if making any custom modification
\ProvidesPackage{sphinxlatexnumfig}[2021/01/27 numbering]

% Requires: remreset (old LaTeX only)
% relates to numfig and numfig_secnum_depth configuration variables

% LaTeX 2018-04-01 and later provides \@removefromreset
\ltx@ifundefined{@removefromreset}
    {\RequirePackage{remreset}}
    {}% avoid warning
% Everything is delayed to \begin{document} to allow hyperref patches into
%   \newcounter to solve duplicate label problems for internal hyperlinks to
%   code listings (literalblock counter).  User or extension re-definitions of
%   \theliteralblock, et al., thus have also to be delayed. (changed at 3.5.0)
\AtBeginDocument{%
\ltx@ifundefined{c@chapter}
   {\newcounter{literalblock}}%
   {\newcounter{literalblock}[chapter]%
    \def\theliteralblock{\ifnum\c@chapter>\z@\arabic{chapter}.\fi
                         \arabic{literalblock}}%
    }%
\ifspx@opt@nonumfigreset
    \ltx@ifundefined{c@chapter}{}{%
      \@removefromreset{figure}{chapter}%
      \@removefromreset{table}{chapter}%
      \@removefromreset{literalblock}{chapter}%
      \ifspx@opt@mathnumfig
        \@removefromreset{equation}{chapter}%
      \fi
    }%
    \def\thefigure{\arabic{figure}}%
    \def\thetable {\arabic{table}}%
    \def\theliteralblock{\arabic{literalblock}}%
    \ifspx@opt@mathnumfig
      \def\theequation{\arabic{equation}}%
    \fi
\else
\let\spx@preAthefigure\@empty
\let\spx@preBthefigure\@empty
% \ifspx@opt@usespart  % <-- LaTeX writer could pass such a 'usespart' boolean
%                      %     as sphinx.sty package option
% If document uses \part, (triggered in Sphinx by latex_toplevel_sectioning)
% LaTeX core per default does not reset chapter or section
% counters at each part.
% But if we modify this, we need to redefine \thechapter, \thesection to
% include the part number and this will cause problems in table of contents
% because of too wide numbering. Simplest is to do nothing.
% \fi
\ifnum\spx@opt@numfigreset>0
    \ltx@ifundefined{c@chapter}
      {}
      {\g@addto@macro\spx@preAthefigure{\ifnum\c@chapter>\z@\arabic{chapter}.}%
       \g@addto@macro\spx@preBthefigure{\fi}}%
\fi
\ifnum\spx@opt@numfigreset>1
    \@addtoreset{figure}{section}%
    \@addtoreset{table}{section}%
    \@addtoreset{literalblock}{section}%
    \ifspx@opt@mathnumfig
      \@addtoreset{equation}{section}%
    \fi%
    \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}.}%
    \g@addto@macro\spx@preBthefigure{\fi}%
\fi
\ifnum\spx@opt@numfigreset>2
    \@addtoreset{figure}{subsection}%
    \@addtoreset{table}{subsection}%
    \@addtoreset{literalblock}{subsection}%
    \ifspx@opt@mathnumfig
      \@addtoreset{equation}{subsection}%
    \fi%
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}.}%
    \g@addto@macro\spx@preBthefigure{\fi}%
\fi
\ifnum\spx@opt@numfigreset>3
    \@addtoreset{figure}{subsubsection}%
    \@addtoreset{table}{subsubsection}%
    \@addtoreset{literalblock}{subsubsection}%
    \ifspx@opt@mathnumfig
      \@addtoreset{equation}{subsubsection}%
    \fi%
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}.}%
    \g@addto@macro\spx@preBthefigure{\fi}%
\fi
\ifnum\spx@opt@numfigreset>4
    \@addtoreset{figure}{paragraph}%
    \@addtoreset{table}{paragraph}%
    \@addtoreset{literalblock}{paragraph}%
    \ifspx@opt@mathnumfig
      \@addtoreset{equation}{paragraph}%
    \fi%
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}.}%
    \g@addto@macro\spx@preBthefigure{\fi}%
\fi
\ifnum\spx@opt@numfigreset>5
    \@addtoreset{figure}{subparagraph}%
    \@addtoreset{table}{subparagraph}%
    \@addtoreset{literalblock}{subparagraph}%
    \ifspx@opt@mathnumfig
      \@addtoreset{equation}{subparagraph}%
    \fi%
    \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}.}%
    \g@addto@macro\spx@preBthefigure{\fi}%
\fi
\expandafter\g@addto@macro
\expandafter\spx@preAthefigure\expandafter{\spx@preBthefigure}%
\let\thefigure\spx@preAthefigure
\let\thetable\spx@preAthefigure
\let\theliteralblock\spx@preAthefigure
\g@addto@macro\thefigure{\arabic{figure}}%
\g@addto@macro\thetable{\arabic{table}}%
\g@addto@macro\theliteralblock{\arabic{literalblock}}%
  \ifspx@opt@mathnumfig
    \let\theequation\spx@preAthefigure
    \g@addto@macro\theequation{\arabic{equation}}%
  \fi
\fi
}% end of big \AtBeginDocument

\endinput
